import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class 划分数组为连续数字的集合 {
    public boolean isPossibleDivide(int[] nums, int k) {
        int n = nums.length;
        // 判断能不能整除
        if (n % k != 0) {
            return false;
        }
        // 哈希表存储 数字 和 多少
        Map<Integer,Integer> map = new HashMap<>();
        for (int num : nums) {
            map.put(num,map.getOrDefault(num,0) + 1);
        }
        // 排序
        Arrays.sort(nums);
        for (int num : nums) {
            // 判断有没有 num, 当他为 0 我们会删掉的
            if (!map.containsKey(num)) {
                continue;
            }
            // 是否存在 k 个
            for (int i = 0;i < k;i++) {
                int x = num + i;
                // 不存在的话就不连续
                if (!map.containsKey(x)) {
                    return false;
                }
                // 去掉个数
                map.put(x,map.get(x) - 1);
                // 到 0 就去掉
                if (map.get(x) == 0) {
                    map.remove(x);
                }
            }
        }
        return true;
    }
}
